<?php


namespace app\binarytreedepth\controller;

/**
 * 深度优先遍历-前序/中序/后序遍历
 * Class Bt
 * @package app\binarytreedepth\controller
 */
class Bt
{
    // 递归
    // 前序遍历
    public function pre_order($root)
    {
        if ($root != null) {
            echo $root->value . '<br/>';        // 根
            if ($root->left != null) {
                $this->pre_order($root->left);     //递归遍历左树
            }
            if ($root->right != null) {
                $this->pre_order($root->right);    //递归遍历右树
            }
        }
    }
    // 递归
    // 中序遍历
    public function in_order($root)
    {
        dump('start');
        if ($root != null) {
            dump(0);
            if ($root->left != null) {
                dump(1);
                $this->in_order($root->left);  // 递归遍历左树
                dump('s');
            }
            dump('ss');
            echo $root->value . " ";
            dump('sss');
            if ($root->right != null) {
                dump(2);
                $this->in_order($root->right); // 递归遍历右树
                dump('ssss');
            }
        }
        dump('end');
    }

    // 递归
    // 后序遍历
    public function post_order($root) {
        if ($root != null) {
            if ($root->left != null) {
                $this->post_order($root->left);  // 递归遍历左树
            }
            if ($root->right != null) {
                $this->post_order($root->right); // 递归遍历右树
            }
            echo $root->value . " ";    // 根
        }
    }
}